# -*-perl-*-
######################################################################
# 
# File: t2h_singular.init init file for singular t2h
#

use strict;

my $T2H_BLUE_BUTTONS = 0;

# we only redefine things which ar of relevance to singular
# all the others we simply "include"

# -prefix
# Set the output file prefix, prepended to all .html, .png and .pl files.
set_from_init_file('setfilename', 'sing');

# -expand
# if set to "tex" (or, "info") expand @iftex and @tex (or, @ifinfo) sections
# else, neither expand @iftex, @tex, nor @ifinfo sections
set_from_init_file('EXPANDED_FORMATS', ['html', 'tex']);

# if set, creates one html file per node
set_from_init_file('SPLIT', 'node');

#if set cross-references use the xref node name argument
set_from_init_file('XREF_USE_NODE_NAME_ARG', 1);

# if set, chatter about what we are doing
set_from_init_file('VERBOSE', 1);

# print index summary for 'cp' index
# obsolete
#set_from_init_file('IDX_SUMMARY', 'cp');

my $T2H_SING_base_images = '../singular_images/';

# inside <BODY ..>
set_from_init_file('BODYTEXT','lang="en"  background="'.${T2H_SING_base_images}.'Mybg.png"');

# after <BODY>
set_from_init_file('AFTER_BODY_OPEN', "\n");

# before </BODY>
set_from_init_file('PRE_BODY_CLOSE', "\n");

# if using tex4ht, must be in latex mode due to \textbf
$Texinfo::TeX4HT::STYLE='latex';

# title is already in the manual
#$print_title = \&T2H_DEFAULT_print_title;
set_from_init_file('SHOW_TITLE', 0);

# footer

texinfo_register_formatting_function('element_footer' , \&singular_footer);

sub singular_footer($$$$)
{
  my $self = shift;
  my $type = shift;
  my $element = shift;
  my $content = shift;


  my $end_page = (!$element->{'element_next'}
       or (defined($element->{'filename'})
           and $element->{'filename'} ne $element->{'element_next'}->{'filename'}
           and $self->{'file_counters'}->{$element->{'filename'}} == 1));

  if ($self->element_is_top($element)) {
    my $buttons = $self->get_conf('TOP_BUTTONS');
    my $content_href = $self->_element_direction($element, 'Contents', 
                                               'href');
    my $about_href = $self->_element_direction($element, 'About',
                                               'href');
    my $result = '';
    if ($content_href or $about_href) {
      $result .= "<blockquote>\n";
      $result .= "<a href=\"$content_href\">Table of Contents</a>\n<br>\n"
         if ($content_href);
      $result .= "<a href=\"$about_href\">About this document</a>"
         if ($about_href);
      $result .= "</blockquote>";
    }
    $result .= "</td>
</tr>
</table>
"
       if ($self->get_conf('VERTICAL_HEAD_NAVIGATION'));
    $result .= $self->get_conf('DEFAULT_RULE')."\n"
       if (defined($self->get_conf('DEFAULT_RULE')));
    if ($end_page) {
      $result .= &{$self->{'format_navigation_header_panel'}}($self, 
                                            $buttons, undef, $element);
    }
    return $result;
  }

  return &{$self->default_formatting_function('element_footer')}($self,
                                            $type, $element, $content);
}


texinfo_register_formatting_function('end_file' , \&singular_end_file);

# footer of page
sub singular_end_file($)
{
  my $self = shift;
  my $pre_body_close = $self->get_conf('PRE_BODY_CLOSE');
  my $program_homepage = $self->get_conf('PACKAGE_URL');
  my $program_and_version = $self->get_conf('PACKAGE_AND_VERSION');
  my $version = $self->get_value('VERSION');
  my $version_date = $self->get_value('VERSION_DATE');
  $version = 'NO VERSION' if (!defined($version));
  $version_date = 'NO VERSION DATE' if (!defined($version_date));
  my $result = '
<font size="-1">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; User manual for <a href="http://www.singular.uni-kl.de/"><i>Singular</i></a> version '."$version, $version_date,
generated by <a href=\"$program_homepage\"><i>$program_and_version</i></a>.
</font>
$pre_body_close
</body>
</html>
";
}


sub singular_banner
{
  my $result = '';
  $result .= <<EOT;
  <a href="index.htm"><img
    src="${T2H_SING_base_images}singular-icon-transparent.png" width="50"
      border="0" alt="Top"></a>
EOT
  return $result;
}

# always use bottom navigation
set_from_init_file('WORDS_IN_PAGE', 0);

set_from_init_file('VERTICAL_HEAD_NAVIGATION', 1);
my @SECTION_BUTTONS =
  (
   \&singular_banner,
   'Back', 'Forward',   'FastBack', 'FastForward',   
   'Up', 'Top', 'Contents', 'Index', 'About' 
  );

set_from_init_file ('SECTION_BUTTONS', \@SECTION_BUTTONS);

my @NODE_FOOTER_BUTTONS = @SECTION_BUTTONS;
set_from_init_file ('NODE_FOOTER_BUTTONS', \@SECTION_BUTTONS);

# buttons for misc stuff
my @MISC_BUTTONS = (\&singular_banner, 'Top', 'Contents', 'Index', 'About');
my @TOP_BUTTONS = (\&singular_banner, 'Top', 'Contents', 'Index', 'About');

set_from_init_file ('MISC_BUTTONS', \@MISC_BUTTONS);
set_from_init_file ('TOP_BUTTONS', \@TOP_BUTTONS);

set_from_init_file('ICONS', 1);

my %ACTIVE_ICONS;
my %PASSIVE_ICONS;

if ($T2H_BLUE_BUTTONS) {
  
  %ACTIVE_ICONS =
  (
   'Top',      'blue_top.png',
   'Contents', 'blue_dir.png',
   'Overview', '',
   'Index',    'blue_readme.png',
   'Back',     'blue_prev.png',
   'FastBack', 'blue_pprev.png',
   'Prev',     'blue_pprev.png',
   'Up',       'blue_up.png',
   'Next',     'blue_nnext.png',
   'Forward',  'blue_next.png',
   'FastForward', 'blue_nnext.png',
   'About' ,    'blue_help.png',
   ' ',        ''
  );

  %PASSIVE_ICONS =
  (
   'Top',      'blue_top.png',
   'Contents', 'blue_dir.png',
   'Overview', '',
   'Index',    'blue_readme.png',
   'Back',     'blue_prev.png',
   'FastBack', 'blue_pprev.png',
   'Prev',     'blue_pprev.png',
   'Up',       'blue_up.png',
   'Next',     'blue_nnext.png',
   'Forward',  'blue_next.png',
   'FastForward', 'blue_nnext.png',
   'About' ,    'blue_help.png',
  );

} else {

  %ACTIVE_ICONS =
  (
   'Top',      'a_top.png',
   'Contents', 'a_tableofcon.png',
   'Overview', '',
   'Index',    'a_index.png',
   'Back',     'a_left.png',
   'FastBack', 'a_leftdouble.png',
   'Prev',     'a_leftdouble.png',
   'Up',       'a_up.png',
   'Next',     'a_rightdouble.png',
   'Forward',  'a_right.png',
   'FastForward', 'a_rightdouble.png',
   'About' ,    'a_help.png',
   ' ',        'a_empty.png'
  );

  %PASSIVE_ICONS =
  (
   'Top',      'a_top_na.png',
   'Contents', 'a_tableofcon_na.png',
   'Overview', '',
   'Index',    'a_index_na.png',
   'Back',     'a_left_na.png',
   'FastBack', 'a_leftdouble_na.png',
   'Prev',     'a_leftdouble_na.png',
   'Up',       'a_up_na.png',
   'Next',     'a_rightdouble_na.png',
   'Forward',  'a_right_na.png',
   'FastForward', 'a_rightdouble_na.png',
   'About' ,    'a_help_na.png',
  );
}

foreach my $hash_ref((\%ACTIVE_ICONS, \%PASSIVE_ICONS)) {
  foreach my $key (keys(%$hash_ref)) {
    next if ($hash_ref->{$key} eq '');
    $hash_ref->{$key} = $T2H_SING_base_images.$hash_ref->{$key};
  }
}

set_from_init_file ('ACTIVE_ICONS', \%ACTIVE_ICONS);
set_from_init_file ('PASSIVE_ICONS', \%PASSIVE_ICONS);

sub T2H_SING_pre_about($$)
{
  my $self = shift;
  my $element = shift;
  my $version = $self->get_value('VERSION');
  my $version_date = $self->get_value('VERSION_DATE');
  $version = 'NO VERSION' if (!defined($version));
  $version_date = 'NO VERSION DATE' if (!defined($version_date));
  my $program_homepage = $self->get_conf('PACKAGE_URL');
  my $program_and_version = $self->get_conf('PACKAGE_AND_VERSION');
  my $result = '';
  $result .= <<EOT;
This document is the user manual for <a href="http://www.singular.uni-kl.de/"><i>Singular</i></a> version $version, $version_date. 
<br>   

For questions and comments about Singular, send email to <a href="mailto:singular\@mathematik.uni-kl.de">singular\@mathematik.uni-kl.de</a>.
  
<p></p>  
This document was generated by <a href="$program_homepage"><i>$program_and_version</i></a> 
and <a href="http://www-dsed.llnl.gov/files/programs/unix/latex2html/manual/">LaTeX2<tt>HTML</tt></a> 
and is best  viewed with a 16 or 18 point screen font.
<p></p>
EOT
  return $result;
}

set_from_init_file ('PRE_ABOUT', \&T2H_SING_pre_about);

# a whole menu
texinfo_register_command_formatting('menu', \&t2h_sing_menu);

sub t2h_sing_menu($)
{
  my $self = shift;
  my $cmdname = shift;
  my $command = shift;
  my $content = shift;

  if ($content =~ /\S/) {
    return "<blockquote><table class=\"menu\" border=\"0\" cellspacing=\"0\">\n" . $content. "</table></blockquote>\n";
  }
  return '';
}

1;    # This must be the last line
